package com.swcw.platform.utils;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;

import com.swcw.platform.utils.bean.TextReq;

/**
 * 微信请求解析
 * 
 * @author 杨坚
 * @version [版本号, 2016年3月18日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class Analyzer {
	private static Logger logger = Logger.getLogger(Analyzer.class);

	/**
	 * 解析文本消息
	 * 
	 * @param document
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public static TextReq parseTextReq(Document document) {
		Element root = document.getRootElement();
		String toUserName = root.elementText("ToUserName");
		String fromUserName = root.elementText("FromUserName");
		long createTime = 0L;
		try {
			Long.parseLong(root.elementText("CreateTime"));
		} catch (NumberFormatException e) {
			createTime = System.currentTimeMillis();
		}
		String msgType = root.elementText("MsgType");
		String content = root.elementText("Content");
		String msgId = root.elementTextTrim("MsgId");

		TextReq textReq = new TextReq();
		textReq.setToUserName(toUserName);
		textReq.setFromUserName(fromUserName);
		textReq.setCreateTime(createTime);
		textReq.setMsgType(msgType);
		textReq.setContent(content);
		textReq.setMsgId(msgId);
		return textReq;
	}

	/**
	 * 解析微信时间消息
	 * 
	 * @param document
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public static EventReq parseEventReq(Document document) {
		Element root = document.getRootElement();
		if (null == root) {
			logger.error("document is empty!");
			return null;
		}
		String toUserName = root.elementText("ToUserName");
		String fromUserName = root.elementText("FromUserName");
		long createTime = 0L;
		try {
			Long.parseLong(root.elementText("CreateTime"));
		} catch (NumberFormatException e) {
			createTime = System.currentTimeMillis();
		}
		String msgType = root.elementText("MsgType");
		String event = root.elementText("Event");
		String eventKey = root.elementText("EventKey");

		EventReq eventReq = new EventReq();

		// ###########WIFI连接##############//
		// ConnectTime 连网时间（整型）
		// ExpireTime 系统保留字段，固定值
		// VendorId 系统保留字段，固定值
		// ShopId 门店ID，即shop_id
		// DeviceNo 连网的设备无线mac地址，对应bssid
		if (!(root.elementText("ConnectTime") == null || "".equals(root.elementText("ConnectTime")))) {
			eventReq.setConnectTime(root.elementText("ConnectTime"));
		}
		if (!(root.elementText("ExpireTime") == null || "".equals(root.elementText("ExpireTime")))) {
			eventReq.setExpireTime(root.elementText("ExpireTime"));
		}
		if (!(root.elementText("VendorId") == null || "".equals(root.elementText("VendorId")))) {
			eventReq.setVendorId(root.elementText("VendorId"));
		}
		if (!(root.elementText("ShopId") == null || "".equals(root.elementText("ShopId")))) {
			eventReq.setShopId(root.elementText("ShopId"));
		}
		if (!(root.elementText("DeviceNo") == null || "".equals(root.elementText("DeviceNo")))) {
			eventReq.setDeviceNo(root.elementText("DeviceNo"));
		}
		// ###########WIFI连接##############//
		
		
		// ###########微信扫一扫##############//
//		KeyStandard	商品编码标准。
//		KeyStr	商品编码内容。
//		Country	用户在微信内设置的国家。
//		Province	用户在微信内设置的省份。
//		City	用户在微信内设置的城市 。
//		Sex	用户的性别，1为男性，2为女性，0代表未知。
//		Scene	打开商品主页的场景，1为扫码，2为其他打开场景（如会话、收藏或朋友圈）
		
		if (!(root.elementText("KeyStandard") == null || "".equals(root.elementText("KeyStandard")))) {
			eventReq.setKeyStandard(root.elementText("KeyStandard"));
		}
		if (!(root.elementText("KeyStr") == null || "".equals(root.elementText("KeyStr")))) {
			eventReq.setKeyStr(root.elementText("KeyStr"));
		}
		if (!(root.elementText("Country") == null || "".equals(root.elementText("Country")))) {
			eventReq.setCountry(root.elementText("Country"));
		}
		if (!(root.elementText("Province") == null || "".equals(root.elementText("Province")))) {
			eventReq.setProvince(root.elementText("Province"));
		}
		if (!(root.elementText("City") == null || "".equals(root.elementText("City")))) {
			eventReq.setCity(root.elementText("City"));
		}
		if (!(root.elementText("Sex") == null || "".equals(root.elementText("Sex")))) {
			eventReq.setSex(root.elementText("Sex"));
		}
		if (!(root.elementText("Scene") == null || "".equals(root.elementText("Scene")))) {
			eventReq.setScene(root.elementText("Scene"));
		}
		// ###########微信扫一扫##############//
		
		//#############上报地理位置事件###########//
		
		if (!(root.elementText("Latitude") == null || "".equals(root.elementText("Latitude")))) {
			eventReq.setLatitude(root.elementText("Latitude"));
		}
		if (!(root.elementText("Longitude") == null || "".equals(root.elementText("Longitude")))) {
			eventReq.setLongitude(root.elementText("Longitude"));
		}
		if (!(root.elementText("Precision") == null || "".equals(root.elementText("Precision")))) {
			eventReq.setPrecision(root.elementText("Precision"));
		}
		
		//############上报地理位置事件############//

		eventReq.setToUserName(toUserName);
		eventReq.setFromUserName(fromUserName);
		eventReq.setCreateTime(createTime);
		eventReq.setMsgType(msgType);
		eventReq.setEvent(event);
		eventReq.setEventKey(eventKey);
		return eventReq;
	}
}
